1. Field of the Invention
This invention relates generally to the field of computer graphics and, more particularly, to performing frame detection in a graphics system.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on the computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modem graphics systems, however, incorporate graphics processors with a great deal of processing power. They now act more like coprocessors rather than simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modern computer displays have many more pixels, greater color depth, and are able to display more complex images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex. Consequently, the generation of these images may involve advanced techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating, “draw a box at these coordinates.” The graphics system then draws the box, freeing the processor to perform other tasks.
Generally, a graphics system in a computer is a type of video adapter that contains its own processor to boost performance levels. These processors are specialized for computing graphical transformations, so they tend to achieve better results than the general-purpose CPU used by the computer system. In addition, they free up the computer's CPU to execute other commands while the graphics system is handling graphics computations. The popularity of graphics applications, and especially multimedia applications, has made high performance graphics systems a common feature in many new computer systems. Most computer manufacturers now bundle a high performance graphics system with their computing systems.
In many applications, it may be useful to have two monitors or displays connected to the same computer system. For example, in some graphical editing applications, it is desirable to use one monitor to show a close-up of an area being edited, while another monitor shows a wider field of view of the object or picture being edited. Alternatively, some users may configure one monitor to display the object being edited and the other monitor to display various palettes or editing options that can be used while editing. Another situation where multiple displays are useful occurs when several users are connected to a single computer. In such a situation, it may be desirable for users to have their own displays. In another situation, it may simply be desirable to have multiple displays that each display a different portion of an image in order to provide a larger display than would otherwise be possible. Another example is stereo goggles, which present different images to their wearer's left and right eyes in order to create a stereo viewing effect. These examples illustrate just a few of the many situations where it is useful to have multiple displays connected to the same computer system.
In many situations, it may be useful to synchronize multiple display channels. For example, in stereo display (e.g., where left and right images are provided to a user's left and right eyes by a pair of stereo goggles), virtual reality, and video recording, distracting visual effects may occur unless the various display streams are synchronized. For example, if the displays in a stereo display system are not synchronized, the left image and right image may not display left- and right-eye views of the same image at the same time, which may disorientate a viewer.
Each display stream may have its own video timing generator (VTG). While each of the VTGs for the display streams which are to be synchronized may be set to use the same timing, variations in the reference frequencies used by each display stream may eventually cause their respective video timings to drift relative to each other. To solve this problem, methods of synchronizing multiple display channels have been devised which involve setting one display channel as the “master” channel and setting the other display channel(s) to be “slave” channels. The slave channels may be configured to synchronize to the master by jumping to the beginning of a frame whenever they detect the master's next frame beginning.
Often, all or some of the master display channel's synchronization signals (FRAME, VSYNC, and HSYNC) may be combined into a single signal (CSYNC) for transmission to the slave display channels. In order to synchronize to the master display channel, each slave display channel needs to detect the beginning of a frame within the CSYNC signal. However, different master display channels may combine various synchronization signals into a CSYNC signal using a variety of different techniques. For example, the synchronization signals may be combined by performing a logical XNOR operation. Some CSYNC signals may be active-high while others may be active-low. Furthermore, CSYNC signals differ depending on the underlying display format of the master display channel. Because of the variations that may arise between different implementations of CSYNC signals, it is desirable to have a frame detector that is capable of detecting the beginning of a frame within many different CSYNC signals, even if the frame detector has not been preprogrammed to recognize such CSYNC signals.